package jianzhioffer.list;

import algorithm.model.ListNode;

/**
 * 链表中倒数第K个节点
 * Created by yzy on 2020-05-07 10:39
 */
public class FindKthToTail {

    public static void main(String[] args) {
        ListNode nodes = ListNode.initDate(new int[]{1,2,3,4,5});
        System.out.println(findKthToTail(nodes,6));
    }

    /**
     * 双指针的方法，思路很简单。
     * 主要需要考虑的是，k大于链表长度的时候，需要返回null
     * @param head
     * @param k
     * @return
     */
    public static ListNode findKthToTail(ListNode head, int k) {
        ListNode dummy = head;
        while(head != null && dummy != null){
            head = head.next;
            if(k <= 0){
                dummy = dummy.next;
            }
            k--;
        }
        return k<=0 ? dummy : null;
    }

}
